home *** CD-ROM | disk | FTP | other *** search
/ Freelog 125 / Freelog_MarsAvril2015_No125.iso / Musique / Quod Libet / quodlibet-3.3.0-installer.exe / bin / encodings / utf_8_sig.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2014-12-31  |  5KB  |  128 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.7)
  3.  
  4. """ Python 'utf-8-sig' Codec
  5. This work similar to UTF-8 with the following changes:
  6.  
  7. * On encoding/writing a UTF-8 encoded BOM will be prepended/written as the
  8.   first three bytes.
  9.  
  10. * On decoding/reading if the first three bytes are a UTF-8 encoded BOM, these
  11.   bytes will be skipped.
  12. """
  13. import codecs
  14.  
  15. def encode(input, errors = 'strict'):
  16.     return (codecs.BOM_UTF8 + codecs.utf_8_encode(input, errors)[0], len(input))
  17.  
  18.  
  19. def decode(input, errors = 'strict'):
  20.     prefix = 0
  21.     if input[:3] == codecs.BOM_UTF8:
  22.         input = input[3:]
  23.         prefix = 3
  24.     (output, consumed) = codecs.utf_8_decode(input, errors, True)
  25.     return (output, consumed + prefix)
  26.  
  27.  
  28. class IncrementalEncoder(codecs.IncrementalEncoder):
  29.     
  30.     def __init__(self, errors = 'strict'):
  31.         codecs.IncrementalEncoder.__init__(self, errors)
  32.         self.first = 1
  33.  
  34.     
  35.     def encode(self, input, final = False):
  36.         if self.first:
  37.             self.first = 0
  38.             return codecs.BOM_UTF8 + codecs.utf_8_encode(input, self.errors)[0]
  39.         return None.utf_8_encode(input, self.errors)[0]
  40.  
  41.     
  42.     def reset(self):
  43.         codecs.IncrementalEncoder.reset(self)
  44.         self.first = 1
  45.  
  46.     
  47.     def getstate(self):
  48.         return self.first
  49.  
  50.     
  51.     def setstate(self, state):
  52.         self.first = state
  53.  
  54.  
  55.  
  56. class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
  57.     
  58.     def __init__(self, errors = 'strict'):
  59.         codecs.BufferedIncrementalDecoder.__init__(self, errors)
  60.         self.first = True
  61.  
  62.     
  63.     def _buffer_decode(self, input, errors, final):
  64.         if self.first:
  65.             if len(input) < 3:
  66.                 if codecs.BOM_UTF8.startswith(input):
  67.                     return (u'', 0)
  68.                 self.first = None
  69.             else:
  70.                 self.first = None
  71.                 if input[:3] == codecs.BOM_UTF8:
  72.                     (output, consumed) = codecs.utf_8_decode(input[3:], errors, final)
  73.                     return (output, consumed + 3)
  74.         return codecs.utf_8_decode(input, errors, final)
  75.  
  76.     
  77.     def reset(self):
  78.         codecs.BufferedIncrementalDecoder.reset(self)
  79.         self.first = True
  80.  
  81.  
  82.  
  83. class StreamWriter(codecs.StreamWriter):
  84.     
  85.     def reset(self):
  86.         codecs.StreamWriter.reset(self)
  87.         
  88.         try:
  89.             del self.encode
  90.         except AttributeError:
  91.             pass
  92.  
  93.  
  94.     
  95.     def encode(self, input, errors = 'strict'):
  96.         self.encode = codecs.utf_8_encode
  97.         return encode(input, errors)
  98.  
  99.  
  100.  
  101. class StreamReader(codecs.StreamReader):
  102.     
  103.     def reset(self):
  104.         codecs.StreamReader.reset(self)
  105.         
  106.         try:
  107.             del self.decode
  108.         except AttributeError:
  109.             pass
  110.  
  111.  
  112.     
  113.     def decode(self, input, errors = 'strict'):
  114.         if len(input) < 3 or codecs.BOM_UTF8.startswith(input):
  115.             return (u'', 0)
  116.         if input[:3] == codecs.BOM_UTF8:
  117.             self.decode = codecs.utf_8_decode
  118.             (output, consumed) = codecs.utf_8_decode(input[3:], errors)
  119.             return (output, consumed + 3)
  120.         self.decode = None.utf_8_decode
  121.         return codecs.utf_8_decode(input, errors)
  122.  
  123.  
  124.  
  125. def getregentry():
  126.     return codecs.CodecInfo(name = 'utf-8-sig', encode = encode, decode = decode, incrementalencoder = IncrementalEncoder, incrementaldecoder = IncrementalDecoder, streamreader = StreamReader, streamwriter = StreamWriter)
  127.  
  128.